package com.yxz.util;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author ：yxz
 * @description：数据处理工具
 * @date ：2024/11/19 下午2:04
 */
public class DataTypeUtil {

    /**
     * 保留浮点值的小数位
     * @param floatValue 浮点值
     * @param num 保留小数位数
     * @return
     */
   public static Float getNumFloat(float floatValue, int num){
        BigDecimal bd = new BigDecimal(Float.toString(floatValue));
        bd = bd.setScale(num, BigDecimal.ROUND_HALF_UP); // 四舍五入
        return bd.floatValue();
    }

    /**
     * 把对象转为字符串，对象为空时返回空字符串
     * @param obj
     * @return
     */
    public static String getStrByObj(Object obj){
        String str = "";
        if(obj!=null){
            str=String.valueOf(obj);
        }
        return str;
    }

    /**
     * 把字符串转为Double
     * @param str
     * @return
     */
    public static Double getDoubleByStr(String str){
        Double val = 0.0;
        if(!str.isEmpty()){
            val=Double.valueOf(str);
        }
        return val;
    }

    /**
     * 在 list 中，找跟 value 最大接近值，且该值小于等于 value
     * @param list 不为null。
     * @param value 不为null。
     */
    public static Double findMaxNearestValue(List<Double> list, Double value) {
        Double maxValue = list.get(list.size()-1);
        for (Double tmpValue : list) {
            // 如果有相同值，直接返回，这是最符合要求的值
            if (tmpValue.equals(value)) {
                return value;
            }
            if (tmpValue <= value && maxValue < tmpValue) {
                maxValue = tmpValue;
            }
        }
        return maxValue;
    }
}
